package com.tanovo.service;

import com.tanovo.bo.BindClientBo;
import com.tanovo.bo.CompanyQueryBo;
import com.tanovo.domain.Company;
import com.tanovo.domain.CompanyMapUser;
import com.tanovo.domain.User;

import java.util.List;

public interface ICompanyService {
    /**
     * 公司绑定用户
     * @param user
     * @param companyId
     */
    void bindUser(User user, Integer companyId);

    /**
     * 添加业务接入公司信息
     * @param company
     */
    void addPartnerCompany(Company company);

    /**
     * 添加公司实体类 基础方法
     * @param company
     */
    void add(Company company);

    /**
     * 批量删除公司
     * @param companyIdList
     */
    void delCompanyList(List<Integer> companyIdList);

    /**
     * 修改公司
     * @param company
     */
    void editCompany(Company company);

    /**
     * 条件查找公司
     * @param companyQueryBo
     * @return
     */
    List<Company> list(CompanyQueryBo companyQueryBo);

    /**
     * 用户能登录的公司列表
     * @param userId
     * @return
     */
    List<Company> userLoginCompanyList(Integer userId);

    /**
     * 详情
     * @param companyId
     * @return
     */
    Company detail(Integer companyId);


    /**
     * 用户开通的公司关系
     * @param userId
     * @return
     */
    List<CompanyMapUser> getCompanyMapUserList(Integer userId);

    /**
     * 更新 用户和公司关系对象
     * @param companyList
     */
    void updateCompanyMapUserList(List<CompanyMapUser> companyList);

    /**
     * 获取登录用户默认公司
     * @param userId
     * @return
     */
    CompanyMapUser getLoginDefaultCompany(Integer userId);

    /**
     * 分享码查找公司
     * @param shareCode
     * @return
     */
    Company getCompanyByShareCode(String shareCode);

    void companyBindUser(Integer companyId, Integer userId);
}
